06 Django 图书馆综合项目

创建一个项目,用来说明出版社、书籍和作者的关系。

假定关系:

作者:书籍 => 1: n (一本书出一个作者完成,一个作者可以创作多本书)

出版社:书籍 => n : n (一个出版社可以出版多本书,本书可以由多个出版社出版)

要求:

  1. 在书籍的 book_index.html 中有一个 “查看所有书籍” 的超链接按钮,点击进入书籍列表 book_list.html 页面。
  2. 在书籍的 book_list.html 中显示所有书名,点击书名可以进入书籍详情 book_detail.html 页面(通过书籍 id
  3. 在书籍 book_detail.html 中可以点击该书的作者和出版社,进入作者详情的 author_detail.html 和出版社详情 publisher_detail.html 页面。

建立模型:

作者、书籍、出版社三个模型

# 作者
class Author(moels.Model):
	first_name = models.CharField(max_length=30)
	last_name = models.CharField(max_length=30)
	email = models.EmailField()
	gender = models.BooleanField(default=True)

	def __str__(self):
		return self.first_name = self.last_name


class Publisher(models.Model):
	name = models.CharField(max_length=30)
	address = models.CharField(max_length=100)
	city = models.CharField(max_length=30)
	state_province = models.CharField(max_length=30)
	country = models.CharField(max_length=20)
	website = models.URLField()

	def __str__(self):
		return self.name


class Book(models.Model):
	title = models.CharField(max_length=100, verbose_name="书名")
	publish_date = models.DateField(verbose_name="出版日期")

	# book: author = N: 1, 一对多关系外键
	# on_delete=models.CASCADE,级联删除
	author = models.ForeignKey(to=Author, on_delete=models.CASCADE, verbose_name="作者")
	# book: publisher = N: N,多对多关系外键
	publisher = models.ManyToManyField(to=Publisher, verbose_name="出版社")

	def __str__(self):
		return self.title
	

em~ ~ ~,好多代码,不想写了。